package day07


/**
 * list
 *  创建与元素获取
 *  getorElse 是一个安全索引取值函数，他需要两个参数，第一个是索引值，第二个是能提供默认值的lambda表达式，如果索引值不存在的
 *  可用来代替异常
 *  getorNull 是kotlin提供的另一个安全索引函数，它返回的null结果，而不是抛出异常
 *
 */
fun main() {
    val list = listOf("lily", "jack", "marry")

//    println(list.getOrElse(3){"Unknown"})
//    println(list.getOrNull(3))
//    println(list.getOrNull(3)?:"Unknown")

    //TODO:1. mutableList 可变集合
    val mutableList = mutableListOf("lily", "jack", "marry")
//    mutableList.add("jimmy")
//    mutableList.remove("jack")
    mutableList.apply{
        add("hello")
    }.apply {
        remove("jack")
    }

    //TODO:2. mutator函数：  不可变转可变   可变转不可变

    mutableListOf("lily", "jack", "marry").toList()
    listOf("lily", "jack", "marry").toMutableList()

    //运算符重载
    val mutableList1 = mutableListOf("lily", "jack", "marry","jacky")
    mutableList1 += "tom"
    mutableList1 -= "marry"
//    println(mutableList1)

    mutableList1.removeIf { it=="jack" }

//    println(mutableList1)


    //TODO: for 循环

    val list2 = listOf("tom", "jeky", "jack")
    for (s in list2) {
//        println(s)
    }

    list2.forEach {
        if (it == "tom"){
            println("我是tom")
        }else {
            println(it)
        }
    }

    list2.forEachIndexed { index, item ->
        println("$index,$item")
    }

    //解构
    //使用下划线_表示此元素不会赋值
    val (origin,_,proxy) = list2



}